Cloud computing is a widely adopted concept. Generally, cloud computing refers to a model for enabling ubiquitous, convenient, and on-demand access to shared pools of configurable computing resources such as networks, servers, storages, applications, functionalities, and the like. There are a number of benefits associated with cloud computing for both the providers of the computing resources and their customers. For example, customers may develop and deploy various business applications on a cloud infrastructure supplied by a cloud provider without the cost and complexity to procure and manage the hardware and software necessary to execute the applications. The customers do not need to manage or control the underlying cloud infrastructure, e.g., including network, servers, operating systems, storage, etc., but still have control over the deployed applications and possibly over the configuration settings of the application-hosting environment. On the other hand, the provider's computing resources are available to provide multiple customers with different physical and virtual resources dynamically assigned and reassigned according to clients' load.
Typically, cloud providers offer common computing resources as services to their customers. Providers may supply these services as demanded and requested by their customers to meet their specific needs and requirements. Generally, customers may choose to enrich their business applications with only some of the offered services. Usually, to do that, customers may have to manually select the desired services. This may be cumbersome and prone to errors. For example, a customer may fail to select the proper services on which functionality the business application actually depends on. This may cause the application to work improperly when deployed and installed on the cloud. Alternative scenario may be selecting and installing all available services regardless of what services the business application actually is configured to access. However, such an alternative results in higher total cost of ownership, since unnecessary computing resources are consumed and provisioned. Another negative effect may be obscuring the monitoring, controlling, and reporting of the actual usage of the computing resources, resulting in less transparency for both the provider and the consumer of the utilized services.